/**
 * Created with IntelliJ IDEA
 * Description:内部类
 * User: lv
 * Date: 2023-03-18
 * Time: 15:05
 */

class OuterClass{
    public int data1=1;
    private int data2=2;
    public static int data3=3;

    //实例内部类：可以把它当作 是外部类的一个普通实例的成员
    //1.在实例内部类当中，不能定义一个静态的成员变量;非要定义，只能定义一个静态常量
    //2.实例化内部类对象：外部类名.内部类名 变量=外部类对象的引用.new 内部类();
    //3.实例内部类中如果包含了和外部类同名的成员变量，如何在内部类中访问？-> OuterClass.this.(外部类名.this)
    //实例内部类中包含两个this，一个是外部类的this，一个是自己的this
    class InnerClass{
        public int data1=77777;
        public int data4=4;
        private int data5=5;
        //public static int data3=3;
        public static final int data6=6;

        public InnerClass(){
            System.out.println("这是一个不带参数的内部类的构造方法");
        }
        public void test(){
            System.out.println("InnerClass::test()");
            System.out.println(OuterClass.this.data1);
            System.out.println(this.data1);
            System.out.println(data2);
            System.out.println(data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println(data6);

        }
    }

    public void func1(){
        System.out.println("OuterClass::func1");
    }
}
public class TestDemo {

    public static void main(String[] args) {
        OuterClass outerClass=new OuterClass();
        outerClass.func1();

        OuterClass.InnerClass innerClass=outerClass.new InnerClass();
        innerClass.test();

    }
}
